3.2. Storage Container Manager
Компоненты Apache Ozone: Storage Container Manager (SCM)
Storage Container Manager (SCM) — это один из ключевых компонентов Apache Ozone, который отвечает за управление контейнерами данных и DataNodes в кластере. SCM играет важную роль в обеспечении репликации, распределения данных и отказоустойчивости. Он координирует взаимодействие между DataNodes и Ozone Manager (OM) и управляет физическим размещением данных в системе.
1. Роль Storage Container Manager (SCM) в Ozone
SCM выполняет следующие основные функции:
- Управление контейнерами данных: SCM отслеживает контейнеры — ло гические единицы хранения данных, которые содержат блоки.
- Распределение данных между DataNodes: Определяет, на каких узлах будут храниться данные и их реплики.
- Контроль репликации: SCM следит за тем, чтобы данные имели нужное количество реплик, и инициирует процесс восстановления, если реплика потеряна.
- Управление состоянием DataNodes: Мониторит состояние узлов и балансирует нагрузку между ними.
- Восстановление после сбоев: В случае отказа DataNode SCM автоматически распределяет реплики на доступные узлы.
2. Основные функции SCM
-
Управление контейнерами:
- Создание и отслеживание контейнеров, в которых хранятся блоки данных.
- Поддержка репликации контейнеров для обеспечения отказоустойчивости.
-
Мониторинг DataNodes:
- Регулярно получает heartbeat-сообщения от DataNodes для мониторинга их состояния.
- Обнаруживает сбои и исключает недоступные узлы из работы.
-
Репликация и восстановление данных:
- SCM поддерживает требуемый уровень репликации (например, 3 копии для каждого контейнера).
- При сбое узла восстанавливает потерянные реплики на других DataNodes.
-
Управление пулом идентификаторов:
- SCM выделяет уникальные идентификаторы для контейнеров и блоков данных.
3. Архитектура Storage Container Manager
SCM включает несколько внутренних компонентов:
-
SCM Metadata Store:
SCM хранит метаданные о контейнерах и DataNodes в базе данных Ratis или RocksDB. -
SCM Pipeline Manager:
Управляет потоками данных (pipelines), которые объединяют DataNodes для передачи и хранения блоков. -
SCM Replication Manager:
Следит за тем, чтобы данные имели нужное количество реплик и восстанавливает реплики при сбоях. -
Heartbeat Manager:
Обрабатывает heartbeat-сообщения от DataNodes и отслеживает их доступность.
4. Запуск и остановка SCM
Запуск SCM
SCM можно запустить с помощью команды:
bin/ozone scm --daemon start
Остановка SCM
bin/ozone scm --daemon stop
Проверка статуса SCM
bin/ozone admin service list
5. Конфигурация SCM
Основные параметры SCM задаются в файле ozone-site.xml
. Пример настроек:
<configuration>
<property>
<name>ozone.scm.address</name>
<value>scm1.example.com:9861</value>
</property>
<property>
<name>ozone.scm.datanode.address</name>
<value>0.0.0.0:9862</value>
</property>
<property>
<name>ozone.scm.heartbeat.interval</name>
<value>30s</value>
</property>
<property>
<name>ozone.scm.replication.factor</name>
<value>3</value>
</property>
</configuration>
ozone.scm.address
: Указывает IP-адрес и порт SCM.ozone.scm.heartbeat.interval
: Интервал отправки heartbeat-сообщений от DataNodes.ozone.scm.replication.factor
: Определяет количество реплик для каждого контейнера.
6. Резервное копирование и восстановление SCM
Создание снимка метаданных SCM
Вы можете создать снимок текущего состояния метаданных SCM:
bin/ozone admin scm snapshot create
Восстановление из снимка
bin/ozone admin scm snapshot restore --snapshot=<snapshot-path>
7. Мониторинг и управление SCM
Просмотр состояния DataNodes:
bin/ozone admin datanode list
Проверка контейнеров:
bin/ozone admin container list